#include <iostream>
#include <string.h>
#include <cmath>
using namespace std;


int l2(int x){
	return (int)log2(x);
}

int power(int a,int b){
	return (int)pow((double)a,(double)b);
}


int main(){
	int n,m;
	cin>>n>>m;
	int a[n];
	int dp[n][l2(n)+1];
	for(int i=0;i<n;i++)
		cin>>a[i];
//	memset(dp,0,sizeof(dp));
	for(int i=0;i<n;i++)
		dp[i][0] = a[i];
	for(int l=1;l<=l2(n);l++){
		for(int i=0;i+power(2,l)-1<n;i++){
			dp[i][l] = max(dp[i][l-1],dp[i+power(2,l-1)][l-1]);   //max
		}
	}
	
	for(int i=0;i<m;i++){
		int x,y;
		cin>>x>>y;
		x--;
		y--;
		int mx=l2(y-x+1);
		cout<<max(dp[x][mx],dp[y-power(2,mx)+1][mx])<<endl;
	}
	return 0;
}
